/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modulos.enfymed.vista;

import basedatos.OperacionesBD;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import modulos.enfymed.modelo.Patologia;
import modulos.usuario.modelo.Usuario;
import vista.frmPrincipal;
import vista.modelo.Mensaje;
import vista.modelo.OperacionesVarias;

/**
 *
 * @author med
 */
public class EnfyMed extends javax.swing.JInternalFrame {

    /**
     * Creates new form EnfyMed
     */
    public EnfyMed() {
        
        initComponents();
        
        OperacionesVarias.cerrarVentanaEscape(this);
        areaTextoIndicaciones.setLineWrap(true);
        areaTextoIndicaciones.setEditable(false);
        areaTextoMedicamentos.setLineWrap(true);
        areaTextoMedicamentos.setEditable(false);
        listar();
        btnModificar.setVisible(false);
        OperacionesVarias.centrar(this);
        if (!registros.isEmpty()) {
            Patologia p = (Patologia) registros.get(0);
            txtBuscar.setText(p.getNombrePatologia());
            areaTextoMedicamentos.setText(p.getMedicamentos());
            areaTextoIndicaciones.setText(p.getIndicaciones());
        }
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        lblPatologias = new javax.swing.JLabel();
        lblMedicamentos = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        btnNuevo = new javax.swing.JButton();
        btnEditar = new javax.swing.JButton();
        btnEliminar = new javax.swing.JButton();
        brnCerrar = new javax.swing.JButton();
        btnBuscar = new javax.swing.JButton();
        txtBuscar = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        areaTextoMedicamentos = new javax.swing.JTextArea();
        jScrollPane2 = new javax.swing.JScrollPane();
        areaTextoIndicaciones = new javax.swing.JTextArea();
        btnAfter = new javax.swing.JButton();
        btnNext = new javax.swing.JButton();
        btnModificar = new javax.swing.JButton();

        setTitle("Patologias y Medicamentos");
        setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/Vial-Pills.png"))); // NOI18N
        setVisible(true);
        getContentPane().setLayout(null);

        lblPatologias.setFont(new java.awt.Font("Ubuntu", 1, 15)); // NOI18N
        lblPatologias.setText("Patologias:");
        getContentPane().add(lblPatologias);
        lblPatologias.setBounds(30, 40, 80, 18);

        lblMedicamentos.setFont(new java.awt.Font("Ubuntu", 1, 15)); // NOI18N
        lblMedicamentos.setText("Medicamentos");
        getContentPane().add(lblMedicamentos);
        lblMedicamentos.setBounds(240, 80, 104, 18);

        jLabel3.setFont(new java.awt.Font("Ubuntu", 1, 15)); // NOI18N
        jLabel3.setText("Indicaciones");
        getContentPane().add(jLabel3);
        jLabel3.setBounds(570, 80, 88, 18);

        btnNuevo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/new window.png"))); // NOI18N
        btnNuevo.setText("Nuevo");
        btnNuevo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNuevoActionPerformed(evt);
            }
        });
        getContentPane().add(btnNuevo);
        btnNuevo.setBounds(10, 110, 100, 30);

        btnEditar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/icono_editar.png"))); // NOI18N
        btnEditar.setText("Editar");
        btnEditar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEditarActionPerformed(evt);
            }
        });
        getContentPane().add(btnEditar);
        btnEditar.setBounds(10, 154, 100, 30);

        btnEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/delete.png"))); // NOI18N
        btnEliminar.setText("Eliminar");
        btnEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEliminarActionPerformed(evt);
            }
        });
        getContentPane().add(btnEliminar);
        btnEliminar.setBounds(10, 200, 100, 30);

        brnCerrar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/agt_home.png"))); // NOI18N
        brnCerrar.setText("Cerrar");
        brnCerrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                brnCerrarActionPerformed(evt);
            }
        });
        getContentPane().add(brnCerrar);
        brnCerrar.setBounds(650, 426, 100, 30);

        btnBuscar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/search.png"))); // NOI18N
        btnBuscar.setText("Buscar");
        btnBuscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnBuscarActionPerformed(evt);
            }
        });
        getContentPane().add(btnBuscar);
        btnBuscar.setBounds(640, 30, 100, 27);
        getContentPane().add(txtBuscar);
        txtBuscar.setBounds(130, 30, 489, 27);

        areaTextoMedicamentos.setColumns(20);
        areaTextoMedicamentos.setRows(5);
        jScrollPane1.setViewportView(areaTextoMedicamentos);

        getContentPane().add(jScrollPane1);
        jScrollPane1.setBounds(140, 100, 290, 250);

        areaTextoIndicaciones.setColumns(20);
        areaTextoIndicaciones.setRows(5);
        jScrollPane2.setViewportView(areaTextoIndicaciones);

        getContentPane().add(jScrollPane2);
        jScrollPane2.setBounds(450, 100, 290, 250);

        btnAfter.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/1leftarrow.png"))); // NOI18N
        btnAfter.setToolTipText("Anterior Registro");
        btnAfter.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAfterActionPerformed(evt);
            }
        });
        getContentPane().add(btnAfter);
        btnAfter.setBounds(400, 360, 32, 32);

        btnNext.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/1rightarrow.png"))); // NOI18N
        btnNext.setToolTipText("Siguiente Registro");
        btnNext.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNextActionPerformed(evt);
            }
        });
        getContentPane().add(btnNext);
        btnNext.setBounds(450, 360, 31, 32);

        btnModificar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/Save.png"))); // NOI18N
        btnModificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnModificarActionPerformed(evt);
            }
        });
        getContentPane().add(btnModificar);
        btnModificar.setBounds(410, 400, 70, 50);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-767)/2, (screenSize.height-490)/2, 767, 490);
    }// </editor-fold>//GEN-END:initComponents

    private void brnCerrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_brnCerrarActionPerformed
        this.dispose();
    }//GEN-LAST:event_brnCerrarActionPerformed

    private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNuevoActionPerformed
        EnfyMed1 em1 = new EnfyMed1(this);
        frmPrincipal.dskpPrincipal.add(em1);
        em1.setVisible(true);
        this.hide();
    }//GEN-LAST:event_btnNuevoActionPerformed

    private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBuscarActionPerformed
        buscarNombre(txtBuscar.getText());
    }//GEN-LAST:event_btnBuscarActionPerformed

    private void btnNextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNextActionPerformed
        siguiente();
    }//GEN-LAST:event_btnNextActionPerformed

    private void btnAfterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAfterActionPerformed
        anterior();
    }//GEN-LAST:event_btnAfterActionPerformed

    private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminarActionPerformed
        if (!txtBuscar.getText().equals("")) {
            String nom = txtBuscar.getText();
            int c = JOptionPane.showConfirmDialog(null, "¿Esta seguro de eliminar la patologia " + nom + "?", "Confirmar", JOptionPane.YES_NO_OPTION);
            if (c == JOptionPane.YES_OPTION) {
                buscarNombre(nom);
                try {
                    if (OperacionesBD.eliminar(patologia, patologia.getIdPatologia())) {
                        Mensaje.datosEliminados();
                        registros.remove(index);
                    } else {
                        Mensaje.datosNoEliminados();
                    }
                } catch (Exception ex) {
                    Logger.getLogger(EnfyMed.class.getName()).log(Level.SEVERE, null, ex);
                }
                areaTextoIndicaciones.setText("");
                areaTextoMedicamentos.setText("");
                txtBuscar.setText("");
                JOptionPane.showMessageDialog(null, "Se ha eliminado la patologia " + nom);
            }

        }
    }//GEN-LAST:event_btnEliminarActionPerformed

    private void btnEditarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEditarActionPerformed
        if (!camposVacios()) {
            editables(true);
            btnAfter.setLocation(372, 361);
            btnNext.setLocation(475, 361);
            btnModificar.setLocation(405, 361);
            btnModificar.setVisible(true);
        } else {
            JOptionPane.showMessageDialog(null, "Los Campos estan vacios");
        }
    }//GEN-LAST:event_btnEditarActionPerformed
    int m = 1;
    private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnModificarActionPerformed
        try {
            if (!camposVacios()) {
                int op = JOptionPane.showConfirmDialog(null, "Desea Modificar los datos ", "Modificar", JOptionPane.YES_NO_OPTION);
                if (op == JOptionPane.YES_OPTION) {
                    buscarNombre(txtBuscar.getText());
                    patologia.setNombrePatologia(txtBuscar.getText());
                    patologia.setIndicaciones(areaTextoIndicaciones.getText());
                    patologia.setMedicamentos(areaTextoMedicamentos.getText());
                    if (OperacionesBD.modificar(patologia)) {
                        Mensaje.datosModificados();
                        registros.set(index, patologia);
                    } else {
                        Mensaje.datosNoModificados();
                    }

                } else {
                    editables(false);
                }
            } else {
                JOptionPane.showMessageDialog(null, "Existen Campos vacios");
            }
            editables(false);
            btnModificar.setVisible(false);
            btnNext.setLocation(450, 370);
            btnAfter.setLocation(400, 370);

        } catch (Exception e) {
            System.out.println(e);
        }
    }//GEN-LAST:event_btnModificarActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    public static javax.swing.JTextArea areaTextoIndicaciones;
    public static javax.swing.JTextArea areaTextoMedicamentos;
    private javax.swing.JButton brnCerrar;
    private javax.swing.JButton btnAfter;
    private javax.swing.JButton btnBuscar;
    private javax.swing.JButton btnEditar;
    private javax.swing.JButton btnEliminar;
    private javax.swing.JButton btnModificar;
    private javax.swing.JButton btnNext;
    private javax.swing.JButton btnNuevo;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JLabel lblMedicamentos;
    private javax.swing.JLabel lblPatologias;
    public static javax.swing.JTextField txtBuscar;
    // End of variables declaration//GEN-END:variables
//
    Patologia patologia;
    static ArrayList<Patologia> registros;
    static int atras;
    static int siguiente;
    private int index;

    public static void editables(boolean edit) {
        areaTextoIndicaciones.setEditable(edit);
        areaTextoMedicamentos.setEditable(edit);
    }

    public static void listar() {
        Usuario u=(Usuario) frmPrincipal.UsuarioLogueado.get(0)[1];
        registros = (ArrayList<Patologia>) OperacionesBD.listarPorUsuario("Patologia",u);
        siguiente = registros.size() - 1;
        atras = 0;
    }

    private void buscarNombre(String nombrePatologia) {
        String med = "", ind = "";
        for (int i = 0; i < registros.size(); i++) {
            Patologia p = (Patologia) registros.get(i);
            if (nombrePatologia.equalsIgnoreCase(p.getNombrePatologia())) {
                med = p.getMedicamentos();
                ind = p.getIndicaciones();
                patologia = p;
                index = i;
            }
        }
        areaTextoMedicamentos.setText(med);
        areaTextoIndicaciones.setText(ind);
    }
//

    public static void anterior() {
        if (!registros.isEmpty()) {
            siguiente++;
            atras--;
            if (atras >= 0) {
                Patologia p = (Patologia) registros.get(atras);
                txtBuscar.setText(p.getNombrePatologia());
                areaTextoMedicamentos.setText(p.getMedicamentos());
                areaTextoIndicaciones.setText(p.getIndicaciones());
            } else if (atras < 0) {
                atras = 0;
                siguiente = registros.size() - 1;
            }
        } else {
            System.out.println("Sin registros");
        }
    }

    public static void siguiente() {
        if (!registros.isEmpty()) {
            atras++;
            siguiente--;
            if (atras < registros.size()) {
                Patologia p = (Patologia) registros.get(atras);
                txtBuscar.setText(p.getNombrePatologia());
                areaTextoMedicamentos.setText(p.getMedicamentos());
                areaTextoIndicaciones.setText(p.getIndicaciones());
            } else if (atras > registros.size() - 1) {
                atras = registros.size() - 1;
                siguiente = 0;
            }

        } else {
            System.out.println("Sin registros");
        }
    }

    private boolean camposVacios() {
        boolean vacio = false;
        if (areaTextoIndicaciones.getText().equals("")
                || areaTextoMedicamentos.getText().equals("")
                || txtBuscar.getText().equals("")) {
            vacio = true;
        }
        return vacio;
    }
}
